CREATE PROCEDURE [dbo].[asi_GroupCopyDetailMembership] (@srcGroupKey uniqueidentifier, @destGroupKey uniqueidentifier, @userKey uniqueidentifier, @now datetime)
AS
BEGIN
CREATE TABLE #tmpTable (GroupMemberKey uniqueidentifier, GroupKey uniqueidentifier, MemberContactKey uniqueidentifier, MemberIsActive bit, CreatedByUserKey uniqueidentifier, CreatedOn datetime,
UpdatedByUserKey uniqueidentifier, UpdatedOn datetime, DropDate datetime, JoinDate datetime,
GroupRoleKey uniqueidentifier, EffectiveDate datetime, ExpirationDate datetime, TypeSpecificData nvarchar(250), TypeSpecificKey uniqueidentifier, TypeSpecificFlag bit, TypeSpecificInt int,
DetailGroupMemberStatusCode nvarchar(4), DetailIsActive bit, GroupMemberDetailKey uniqueidentifier)
INSERT INTO #tmpTable (GroupMemberKey, GroupKey, MemberContactKey, MemberIsActive, CreatedByUserKey, CreatedOn, UpdatedByUserKey,UpdatedOn,
DropDate, JoinDate,
GroupRoleKey, EffectiveDate, ExpirationDate, TypeSpecificData, TypeSpecificKey, TypeSpecificFlag, TypeSpecificInt,
DetailGroupMemberStatusCode, DetailIsActive, GroupMemberDetailKey)
SELECT newid(), @destGroupKey, gm.MemberContactKey, gm.IsActive, @userKey, @now, @userKey, @now, gm.DropDate, gm.JoinDate,
gmd.GroupRoleKey, gmd.EffectiveDate, gmd.ExpirationDate, gmd.TypeSpecificData, gmd.TypeSpecificKey, gmd.TypeSpecificFlag, gmd.TypeSpecificInt,
gmd.GroupMemberStatusCode, gmd.IsActive, newid()
FROM GroupMember gm INNER JOIN GroupMemberDetail gmd ON gm.GroupMemberKey = gmd.GroupMemberKey
WHERE gm.GroupKey = @srcGroupKey
INSERT INTO GroupMember (GroupMemberKey, GroupKey, MemberContactKey, IsActive, CreatedByUserKey, CreatedOn, UpdatedByUserKey, UpdatedOn, DropDate, JoinDate)
SELECT DISTINCT GroupMemberKey, GroupKey, MemberContactKey, MemberIsActive, CreatedByUserKey, CreatedOn, UpdatedByUserKey, UpdatedOn, DropDate, JoinDate
FROM #tmpTable
INSERT INTO GroupMemberDetail (GroupMemberKey, GroupRoleKey, EffectiveDate, ExpirationDate, TypeSpecificData, TypeSpecificKey, TypeSpecificFlag, CreatedOn, CreatedByUserKey, UpdatedOn, UpdatedByUserKey,
TypeSpecificInt, GroupMemberStatusCode, IsActive, GroupMemberDetailKey, GroupKey)
SELECT GroupMemberKey, GroupRoleKey, EffectiveDate, ExpirationDate, TypeSpecificData, TypeSpecificKey, TypeSpecificFlag, CreatedOn, CreatedByUserKey, UpdatedOn, UpdatedByUserKey,
TypeSpecificInt, DetailGroupMemberStatusCode, DetailIsActive, GroupMemberDetailKey, GroupKey
FROM #tmpTable
DROP TABLE #tmpTable
END
GO